//
// Created by 吴竹亚 on 2023/4/20.
//

#ifndef TCPIP_TCP_H
#define TCPIP_TCP_H

#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <pthread.h>

#define MAX_CLIENT_SIZE 20
typedef struct {
    int socket;
    struct sockaddr_in cli_addr;
} MyTcpSocket;

typedef struct NODE {
    MyTcpSocket *myTcpSocket;
    struct NODE *prior, *next;
} NODE;

void initNode(NODE **p);

NODE *addNode(NODE *head, MyTcpSocket *data);

void tcp_server(int port);

void *tcp_accept(void *serverSocket);

void *tcp_recv(void *node);

void tcp_client();

void *tcp_client_recv_message(void *mySocket);

void tcp_server_select(int port);

void *tcp_server_select_recv(void *socketServer);

#endif //TCPIP_TCP_H
